package com.ruoyi.web.controller.common;

import com.baomidou.mybatisplus.annotation.EnumValue;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonValue;
import com.ruoyi.common.utils.StringUtils;

import java.util.HashMap;
import java.util.Map;

/**
 * @Description 微信接受信息事件枚举
 * @Author gc
 * @Date
 */
public enum RecEventEnum {
    /**
     * 新的账号登录成功/下线
     * */
    EventLogin("new","新建"),
    /**
     * 群消息事件（收到群消息时，运行这里）
     * */
    EventGroupMsg("new","新建"),
    /**
     * 私聊消息事件（收到私聊消息时，运行这里）
     * */
    EventFriendMsg("new","新建"),
    /**
     * 收到转账事件（收到好友转账时，运行这里）
     * */
    EventReceivedTransfer("new","新建"),
    /**
     * 面对面收款（二维码收款时，运行这里）
     * */
    EventScanCashMoney("new","新建"),
    /**
     * 好友请求事件
     * */
    EventFriendVerify("new","新建"),
    /**
     * 朋友变动事件（当前为测试版(可爱猫还没提供)，还未启用，留以备用）
     * */
    EventContactsChange("new","新建"),
    /**
     * 群成员增加事件（新人进群）
     * */
    EventGroupMemberAdd("new","新建"),
    /**
     * 群成员减少事件（群成员退出）
     * */
    EventGroupMemberDecrease("new","新建"),
    /**
     * 系统消息事件
     * */
    EventSysMsg("new","新建");


    @EnumValue
    private String code;
    private String name;

    RecEventEnum(String code, String name) {
        this.code = code;
        this.name = name;
    }

    public static Map<String, RecEventEnum> toMap(){
        Map<String, RecEventEnum> toReturn = new HashMap<>();
        RecEventEnum[] values = RecEventEnum.values();
        for(RecEventEnum val:values){
            toReturn.put(val.code, val);
        }
        return toReturn;

    }
    @JsonCreator
    public static RecEventEnum ofValue(String value){
        return toMap().get(value);
    }
    public static String code2name(String code) {
        RecEventEnum[] values = RecEventEnum.values();
        for (RecEventEnum val : values) {
            if(StringUtils.equals(val.codeType(),code)){
                return val.codeName();
            }
        }
        return null;
    }

    public static String name2code(String name) {
        RecEventEnum[] values = RecEventEnum.values();
        for (RecEventEnum val : values) {
            if(StringUtils.equals(val.codeName(),name)){
                return val.codeType();
            }
        }
        return null;
    }

    public String getDomainId() {
        return RecEventEnum.class.getName();
    }

    @JsonValue
    public String codeType() {
        return this.code;
    }

    public String codeName() {
        return this.name;
    }
}
